package com.assignwork.service;

import com.assignwork.dto.GenerateShiftsDTO;
import com.assignwork.dto.ShiftRuleSearchDTO;
import com.assignwork.dto.ShiftRuleSubmitDTO;
import com.assignwork.entity.ShiftRule;
import com.assignwork.vo.DailyShiftVO;
import com.assignwork.vo.ShiftRuleVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;

import java.util.List;

/**
 * @ClassName IShiftRuleService
 * @Description 班组生成规则接口
 * @Author dujianyu
 * @Date 2023/12/1 15:43
 */
public interface IShiftRuleService extends BaseService<ShiftRule> {
    /**
     * 新增或修改
     * @param dto 数据
     * @return boolean
     * @author dujianyu
     * @since 2023/12/4 9:01
     */
    boolean submitShiftRule(ShiftRuleSubmitDTO dto);

    /**
     * 示例
     * @param dto 参数
     * @return 根据规则获取示例
     * @author dujianyu
     * @since 2023/12/4 14:25
     */
    List<DailyShiftVO> getExample(ShiftRuleSubmitDTO dto);

    /**
     * 生成新排班
     * @param dto 规则条件
     * @return boolean
     * @author dujianyu
     * @since 2023/12/5 10:32
     */
    boolean generateNewShifts(GenerateShiftsDTO dto);

    /**
     * 分页
     * @param dto 搜索条件
     * @param page 分页
     * @return IPage<ShiftRuleVO>
     * @author dujianyu
     * @since 2023/12/5 14:10
     */
    IPage<ShiftRuleVO> selectShiftRulePage(ShiftRuleSearchDTO dto, IPage<ShiftRuleVO> page);

    /**
     * 列表
     * @param dto 搜索参数
     * @return List<ShiftRuleVO>
     * @author dujianyu
     * @since 2023/12/5 14:28
     */
    List<ShiftRuleVO> selectShiftRuleList(ShiftRuleSearchDTO dto);
}
